1. Technical Field
The present disclosure relates to replication of data and, more specifically, to efficient replication of data in a network environment having a host computer with byte-addressable persistent memory.
2. Background Information
Many modern computing algorithms are page-based and implemented in a kernel of an operating system executing on a host computer. Paging is a memory management function that facilitates storage and retrieval of data in blocks or “pages” to and from primary storage, such as disks. For example, assume that a page contains 4 k bytes of data. An application executing on the host computer may utilize a page-based algorithm to, e.g., insert a new node into a doubly-linked list. Execution of the algorithm may result in a first modified (“dirtied”) page, i.e., the page with a previous pointer, a second dirtied page, i.e., the page with a next pointer, and a third dirtied page containing the newly written node. Accordingly, execution of the page-based node insertion algorithm results in three (3) dirty pages or 12 k bytes of data.
The advent of byte-addressable persistent memory, such as storage class memory, may accelerate adoption of primary storage to reside on a memory bus of the host computer, as well as acceptance of “in-memory” computing. The persistent memory may be configured to enable applications executing on the host computer to safely and consistently modify (change) their data at a byte addressable granularity to, e.g., survive failures. For instance, execution of the node insertion algorithm at a byte-addressable granularity results in approximately 50 bytes of changed data. Yet, even safe and consistent data stored in the persistent memory may be vulnerable in the event of a disaster because there is only a single copy of the data on the host computer.
Therefore, there is a need to replicate the changed data, e.g., to one or more remote machines connected to the host computer over a network to thereby allow recovery from a disaster. However, in order to replicate, for example, the changed data of the page-based node insertion algorithm to a remote machine, the kernel is forced to copy 12 k bytes of data over the network. This approach is clearly inefficient for changes to data in byte-addressable persistent memory of a network environment.